// 封装一个发布者订阅模式  一个中间人 发布者  订阅者
interface IEventsContainer {
  [key: string]: Function[];
}
const events: IEventsContainer = {};
const EventBus = {
  // 订阅方法
  // 把事件和对应的方法存起来
  on(type: string, callback: () => void) {
    // 把方法和对应额的事件关联并存储
    // events[type] = [];
    !events[type] && (events[type] = []);
    // if (!events[type]) {
    //   events[type] = [];
    // }
    events[type].push(callback);
  },
  //   发布方法
  // 把事件对应的方法调用
  emit(type: string) {
    events[type] && events[type].forEach((fn) => fn());
  },
};
export default EventBus;
